EM聚类算法matlab实现

博主在研究朴素贝叶斯定理时接触到EM聚类算法,并尝试用MATLAB进行编程实现。然而在初始化参数阶段遇到问题,若初始值偏离过大,则最终结果出现偏差。博主疑惑这是否为算法本身的局限或是自身理解不足,期待专家指导。
摘要由CSDN通过智能技术生成

最近看到了朴素贝叶斯定理,看着看着就看到了em聚类的算法中(K-means聚类的原型)。

动手自己编个程序:

%EM algorithm
clc;
clear;

sigma = 1.5;
miu1 = 3;
miu2 = 7;
N = 1000;
x = zeros(1,N);
for i = 1:N
    if rand>0.5
        x(1,i) = randn*sigma + miu1;
        y(1,i) = randn*sigma + miu1;
    else 
        %sigma = 0.5;
        x(1,i) = randn*sigma + miu2;
        y(1,i) = randn*sigma + miu2;
    end
end

plot(x,y,'o');

k = 2;
%miu = rand(1,k)*40;
miu(1) = 4;
miu(2) = 6;
cov(1) = 2;
cov(2) = 2;
%cov = rand(1,k)*6;
a(1) = 1.5;
a(2) = 1.5;
% expectations = zeros(N,k);
num = [0,0];
n = 1;
for step = 1:10000
    n = 1;
    m = 1;
    x1 = [];
    y1 = [];
    x2 = [];
    y2 = [];
    num = [1 1];
    for i = 1:N
        p1 = exp(-(x(i)-miu(1))*(x(i)-miu(1))/(2*cov(1)*cov(1)))/sqrt((2*pi))*cov(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值